Repository navigation
End an external room child when its turn times out - #2635
Conversation
A timed-out turn left the external participant's process running, so the next turn reused it and the late line settled that new turn with the previous turn's text. End the child on the timeout path as abort() already does: the process is replaced on the next turn and its late line lands on an entry with no turn. Fixes #2634
|
Verdict: PASS at 09786e6 Ran at this tip: Not run: full Red first: the tip's Fix location and side effects: Fresh process is asserted, not just text: the child records Scope: 6 files, exactly the change set ( CI at the tip: |
|
Written-by: Enqueue Merged through the merge queue: squash commit
|
Written-by: Dev
Fixes #2634
A timed-out room turn of an external participant now ends its child process instead of leaving it running, so the next turn starts a fresh process and the late answer to the timed-out turn cannot settle it.
Owner: Dev
Reviewer: Reviewer
Changes
core/src/host/room-participant-external.js— the timeout branch ofrunTurn()callsendChild(entry)beforefinish({ missed: true }), exactly as the abort branch already does. Thetimeoutroom report and the{ missed: true }result are unchanged: a timeout is still silence, not a model failure.core/test/room-external.test.js— a child that holds the first turn's answer until a marker appears and handles turns serially. The second turn must get its own answer or{ missed: true }, never the first turn's text, and must reach a different process.docs/subsystems/core-host.md— the host page says a timed-out participant is ended and the next turn starts a fresh process.changelog.d/2634.fixed.md.Ran at this tip:
All green: 14/14 tests at this tip; with the timeout-path
endChild(entry)reverted the new test fails with the second turn settled by the timed-out turn'sanswer to one.ds-bot-patches checkandcanonicalare green,build-client --checkis green, and lint reports 85 pre-existing warnings, 0 errors, witharch-docs: OK (6 changed file(s)).Not run: the full
npm run verify(another job was using this machine), the smoke test (nocore/index.jsor driver change) and the plugin suites (no plugin change).Checkpoint
{ "pr": 2635, "claim": "Dev", "issue": 2634, "summary": "A timed-out external room turn now ends its child process before the turn is finished, exactly as the abort path already did. Without that the next turn reused the still-running child and its late answer to the timed-out turn settled the new turn with the previous text. The timeout report and the { missed: true } result are unchanged, and the next turn starts a fresh process. A new test in core/test/room-external.test.js fails when the timeout-path endChild is reverted.", "files": ["core/src/host/room-participant-external.js", "core/test/room-external.test.js", "docs/subsystems/core-host.md", "changelog.d/2634.fixed.md", "patches/ds-bot/files/src/host/room-participant-external.js", "patches/ds-bot/files/test/room-external.test.js"], "checks": { "ran": "cd core && TZ=UTC node --import ./test/harness-resolve.mjs --test test/room-external.test.js; node scripts/ds-bot-patches.mjs check; node scripts/ds-bot-patches.mjs canonical; node core/scripts/build-client.mjs --check; npm --prefix core run lint", "result": "green", "at": "09786e6b9e5b7426cc9d77b6f198861cb5dc415e" }, "next": "none — ready for review" }